using System;
using System.Collections;
using System.Collections.Generic;
using FinancialAnalyzer.DataBase;
using FinancialAnalyzer.ToolClasses;

namespace FinancialAnalyzer.MoneyFlow
{
    [Serializable]
    public abstract class IMoneyFlowItem : IEnumerable, IComparable<IMoneyFlowItem>
    {
        public abstract Calendar Database { get;}

        public abstract String Classname { get;}

        public abstract EFlowDirection MoneyFlowDirection { get;}

        public abstract bool IsFixedMonthly { get; set;}

        public abstract double FixedMonthlyValue { get; set;}

        public abstract double ValueValency { get; set;}

        public abstract Double Sum();

        public abstract List<KeyValuePaar<String, Double>> Find(String searchString);

        public abstract override string ToString();

        public abstract bool Equals(String s);

        public abstract void YearChanged(int newYear);

        public abstract void MonthChanged(int newMonth);

        #region IEnumerable Member

        public abstract IEnumerator GetEnumerator();

        #endregion

        #region IComparable<IMoneyFlowItem> Member

        public abstract int CompareTo(IMoneyFlowItem other);

        #endregion
    }
}
